package cn.liuweiwei.controller;

import cn.liuweiwei.domain.Type;
import cn.liuweiwei.service.TypeService;
import cn.liuweiwei.util.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;


@RestController
@RequestMapping("types")
@CrossOrigin
public class TypeController {

    @Autowired
    private TypeService typeService;

    /**
     * 分页查询分类
     * @param page 当前页
     * @param limit 每页条数
     * @return 分类的列表数据
     */
    @GetMapping
    public Result findTypePageInfo(String page, String limit) {
        return Result.successWithCodeAndObj(typeService.findAllTypeByPage(page, limit));
    }

    /**
     * 一次性查询所有的分类数据
     * @return 查询到的分类列表
     */
    @GetMapping("all")
    public Result findAllType() {
        List<Type> typeList = typeService.findAllType();
        return Result.successWithObj(typeList);
    }

    /**
     * 通过分类 id 查询博客列表
     * @param id
     * @return 返回查询到的博客列表
     */
    @GetMapping("blogs/{id}")
    public Result findBlogsByTypeId(@PathVariable("id") String id) {
        Type type = typeService.findBlogsByTypeId(id);
        return Result.successWithObj(type);
    }

    /**
     * 添加一个分类
     * @param type
     * @return
     */
    @PostMapping
    public Result insertOneType(@RequestBody Type type) {
        try {
            typeService.insertOneType(type);
            return Result.success("添加分类成功");
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error("添加分类失败");
        }
    }

    /**
     * 更新一个分类
     * @param type
     * @return
     */
    @PutMapping
    public Result updateOneType(@RequestBody Type type) {
        try {
            typeService.updateOneType(type);
            return Result.success("更新分类成功");
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error("更新分类失败");
        }
    }

    /**
     * 通过分类 id 删除分类
     * @param id
     * @return
     */
    @DeleteMapping
    public Result deleteOneType(String id) {
        try {
            typeService.deleteOneType(id);
            return Result.success("删除分类成功");
        } catch (Exception e) {
            e.printStackTrace();
            return Result.error("删除分类失败");
        }
    }
}
